package okw.communication;

import java.net.BindException;
import java.util.HashMap;
import java.util.List;

import okw.gui.DlgCommunicationState;
import core.communication.configurationNode.ConfigurationNode;
import core.communication.message.Message;
import core.communication.message.NodeStateEnum;

public interface CommunicationService {

	public void addReceivedMessage(Message message);

	public void shutDown();

	public void setUp() throws BindException;

	public Message getReceivedMessage();

	public void removeReceivedMessage(Message message);

	public void handleConfiguration(List<ConfigurationNode> configurationNodes);

	public void send(Message message);

	public String getServerURI();

	public Client getClientToCheck();

	public void removeClientToCheck(Client client);

	public void sendNodeStateMessage(String locatorUri, NodeStateEnum state);

	public void reAddClientToCheck(Client client);

	public Message getMessageToSend();

	public HashMap<String, Client> getUpperClients();

	public HashMap<String, Client> getLowerClients();

	public void resendMessage(Message message);

	public void removeMessageToSend(Message message);

	public void addClientToCheck(Client client);

	public String getPrefferedParentURI();

	public void checkCommunication(DlgCommunicationState dlgCommunicationState);

}
